const ListModel = require("../../model/shop/list/index");
const DetailModel = require("../../model/shop/detail/index");
const BuyModel = require("../../model/shop/buy/index");
const PageModel = require("../../model/shop/page/index");
const ShoppingCarJoinModel = require("../../model/shop/shopping-car-join/index");
const RemoveShoppingCarModel = require("../../model/shop/shopping-car-delete");
const ShoppingCarStatusModel = require("../../model/shop/shopping-car-status/index");
const ShoppingCarDetailModel = require("../../model/shop/shopping-car-detail/index");
const OrdersListlModel = require("../../model/shop/order-list/index");
const OrdersChangelModel = require("../../model/shop/order-change/index");
const OrdersSearchlModel = require("../../model/shop/orders-search/index");
const CouponListModel = require("../../model/shop/coupon-list/index");
const CouponRemoveModel = require("../../model/shop/coupon-remove/index");
const shop = {
    // 查询商城列表
    list: async (req, res) => {
        await ListModel().then(data => {
            if (data.length) {
                // 使用 sort() 方法对数组进行排序
                data.sort((a, b) => {
                    // 将日期字符串转换为 Date 对象进行比较
                    const dateA = new Date(a.createTime);
                    const dateB = new Date(b.createTime);

                    // 对比两个日期对象，返回负值表示 a 在 b 前，返回正值表示 a 在 b 后，返回 0 表示相等
                    return dateB - dateA; // 倒序排序
                });
                res.returnMsg({list: data}, '查询成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 查询商品详情
    detail: async (req, res) => {
        const pID = req.query.pID
        await DetailModel(pID).then(data => {
            if (data.length) {
                res.returnMsg({list: data}, '查询成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 下单商品（购买）
    buy: async (req, res) => {
        const newData = req.body
        await BuyModel(newData).then(data => {
            if (data.affectedRows == 1) {
                res.returnMsg({}, '购买成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 分页查询商城列表
    page: async (req, res) => {
        const newData = req.query.title
        await PageModel(newData).then(data => {
            if (data.length) {
                // 使用 sort() 方法对数组进行排序
                data.sort((a, b) => {
                    // 将日期字符串转换为 Date 对象进行比较
                    const dateA = new Date(a.createTime);
                    const dateB = new Date(b.createTime);

                    // 对比两个日期对象，返回负值表示 a 在 b 前，返回正值表示 a 在 b 后，返回 0 表示相等
                    return dateB - dateA; // 倒序排序
                });
                res.returnMsg({list: data}, '查询成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 加入购物车
    shoppingCarJoin: async (req, res) => {
        const newData = req.body
        await ShoppingCarJoinModel(newData).then(data => {
            if (data.affectedRows == 1) {
                res.returnMsg('', '加入成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 移除购物车商品
    removeShoppingCar: async (req, res) => {
        const newData = req.body
        await RemoveShoppingCarModel(newData).then(data => {
            console.log(data)
            if (data.affectedRows == 1) {
                res.returnMsg('', '已移出购物车', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 查询是否在购物车中
    shoppingCarStatus: async (req, res) => {
        const newData = req.query
        await ShoppingCarStatusModel(newData).then(data => {
            if (data.length > 0) {
                res.returnMsg({}, '查询成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 查询购物车列表
    shoppingCarDetail: async (req, res) => {
        const newData = req.query
        await ShoppingCarDetailModel(newData).then(data => {
            // if (data.length > 0) {
            res.returnMsg(data, '查询成功', 200)
            // } else {
            //     res.returnMsg(null, '系统错误，请联系管理员', 500)
            // }
        })
    },
    // 查询我的订单列表
    ordersList: async (req, res) => {
        const newData = req.query
        await OrdersListlModel(newData).then(data => {
            // if (data.length > 0) {
            res.returnMsg(data, '查询成功', 200)
            // } else {
            //     res.returnMsg(null, '系统错误，请联系管理员', 500)
            // }
        })
    },
    // 改变订单状态
    ordersChange: async (req, res) => {
        const newData = req.body
        await OrdersChangelModel(newData).then(data => {
            if (data.affectedRows == 1) {
                res.returnMsg(data, '更改成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
    // 搜索我的订单
    ordersSearch: async (req, res) => {
        const newData = req.query
        await OrdersSearchlModel(newData).then(data => {
            // if (data.length > 0) {
            res.returnMsg(data, '查询成功', 200)
            // } else {
            //     res.returnMsg(null, '系统错误，请联系管理员', 500)
            // }
        })
    },
    // 查询卡券包列表
    couponList: async (req, res) => {
        const newData = req.query
        await CouponListModel(newData).then(data => {
            // if (data.length > 0) {
            res.returnMsg(data, '查询成功', 200)
            // } else {
            //     res.returnMsg(null, '系统错误，请联系管理员', 500)
            // }
        })
    },
    // 移除卡券包的卡券
    couponRemove: async (req, res) => {
        const newData = req.body
        await CouponRemoveModel(newData).then(data => {
            if (data.affectedRows == 1) {
            res.returnMsg(data, '移除成功', 200)
            } else {
                res.returnMsg(null, '系统错误，请联系管理员', 500)
            }
        })
    },
}
module.exports = shop;